package socket.demo1;

import java.io.Serializable;
import java.util.Random;

public class Msg implements Serializable {
    private int stateValue;//状态变量
    private String info;
    private Random random;
    private int rdNum;

    //构造方法
    public Msg(int stateValue) {
        if (stateValue < 2) { //当状态变量小于2的时候，执行MsgState()函数，根据随机数字模拟对应的状态。
            this.stateValue = stateValue;
            MsgState();
        }else {//当状态变量不小于2的时候，执行MsgOver()函数，要发送的数据为结束信号。
            this.stateValue = stateValue;
            MsgOver();
        }
    }

    public void MsgState(){//用于模拟分组丢失，ACK丢失等情况
        random = new Random();//随机数
        rdNum = Math.abs(random.nextInt())%100;//除以100取余，把范围限定在0-99中。
        if (rdNum<10) info = "DataError";//模拟数据错误
        else if(rdNum<20) info = "losePackage";//数据丢失
        else if(rdNum<30) info = "loseAck";//确认丢失
        else info = "noError";//没有错误
    }

    public void MsgOver(){//用于模拟分组丢失，ACK丢失等情况
        info = "over";
    }

    public int getStateValue() {
        return stateValue;
    }

    public void setStateValue(int stateValue) {
        this.stateValue = stateValue;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public Random getRandom() {
        return random;
    }

    public void setRandom(Random random) {
        this.random = random;
    }

    public int getRdNum() {
        return rdNum;
    }

    public void setRdNum(int rdNum) {
        this.rdNum = rdNum;
    }
}
